package org.lanqiao.tjut.model;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;


import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.lanqiao.tjut.bean.LeaMessBean;
import org.lanqiao.tjut.bean.Stu1Bean;
import org.lanqiao.tjut.bean.StuBean;

import org.lanqiao.tjut.db.DBDriverWithTransaction;
import org.lanqiao.tjut.db.DBFactory;

public class ManStuAddFriendsModel {
	Scanner input = new Scanner(System.in);

	/**
	 * 修改好友备注
	 */
	public void updateFriendsInf() {
		// 更新学生信息
		System.out.println("请输入需要更新好友信息ID：");
		String strID = input.next();
		System.out.println("修改学生姓名为：");
		String strName = input.next();
		String strSql = "update  stu1 set stu1_name=? where stu1_id=?";
		Object[] params = { strName, strID };
		int i = DBFactory.getDBDriverInstance().update(strSql, params);
		if (i > 0) {
			System.out.println("好友数据更新成功");
		}
	}

	/**
	 * 删除好友
	 */
	public void deleteFriends() {
		// 获取事务处理驱动实体类对象(此步必须使用实例变量，因为后面的事务处理全部和该实例变量有关，保证后续的操作在同一个事务机制中)

		DBDriverWithTransaction dbdt = DBFactory.getDBDriverWithTransactionInstance();
		// 打开事务：

		dbdt.beginTransaction();
		// 开始多表的事务处理

		// 删除学生信息
		System.out.println("请输入需要删除好友信息ID：");
        //从控制台获取需要删除学生的ID
		int strID = input.nextInt();
		//z组织sql语句删除学生信息
		String strS = "delete from stu1 where stu1_id=?";
           int iupate = dbdt.update(strS, strID);
		// 根据业务逻辑判定事务处理是提交还是回滚

		// 事务提交或回滚处理

		if (iupate > 0 ) {
			// 提交事务

			dbdt.commit();
		} else {
			// 回滚事务

			dbdt.rollback();
		}
		// 关闭资源

		dbdt.close();

	}

	/**
	 * 查看留言
	 */
	public void lookPage() {
		
		System.out.println("请输入需要查询的好友留言的账号：");
		//从控制台获取需要查询好友留言的账号
		String strNum = input.next();
		//组织sql语句查询相关留言内容
		String strSql = "select * from leamessage where lea_number=?";
		// 数据库操作sql语句的参数
		Object[] params = { strNum };
		List<LeaMessBean> lstDepts = DBFactory.getDBDriverInstance().query(strSql, new BeanListHandler<>(LeaMessBean.class),
				params);
		// 根据数据操作结果进行业务逻辑处理
		Iterator<LeaMessBean> it = lstDepts.iterator();
		while (it.hasNext()) {
			System.out.println("\t" + it.next());
		}

	}

	/**
	 * 给好友留言
	 */
	public void sendMessage() {

		//z组织sql语句添加留言信息
		String strSql= "INSERT INTO LEAMESSAGE(lea_number,lea_name,lea_text) "
						+ "VALUES (?, ?, ?)";
		//用list储存留言信息
		List<Object> lstParas = new ArrayList<>();

		// 给好友留言
		System.out.println("请输入需留言好友账号：");
        //从控制台获取需要留言学生的账号
		String strNum = input.next();

		System.out.println("请输入需留言好友姓名：");
        //从控制台获取需要留言学生的姓名
		String strName = input.next();
		System.out.println("请输入需留言内容：");
        //从控制台获取需要留言内容
		String strText = input.next();
		// 添加参数
		lstParas.add(strNum);
		lstParas.add(strName);
		lstParas.add(strText);	
		int i = DBFactory.getDBDriverInstance().update(strSql, lstParas.toArray());

			// 根据数据操作结果进行业务逻辑处理
				if (i > 0) {
					System.out.println("给好友留言成功");
				}

		
	}

	/**
	 * 保存好友信息
	 */
	public void saveFriends() {
		// TODO Auto-generated method stub

	}

	/**
	 * 显示我的所有好友的信息
	 */
	public void showAllFriends() {
		String strSql = "select * from STU1 ";

		List<Stu1Bean> lstDepts = DBFactory.getDBDriverInstance().query(strSql, new BeanListHandler<>(Stu1Bean.class));
		// 根据数据操作结果进行业务逻辑处理
		Iterator<Stu1Bean> it = lstDepts.iterator();
		while (it.hasNext()) {
			System.out.println("\t" + it.next());
		}
	}

	/**
	 * 添加好友
	 */

	public void addFriends() {

		String strSql = "INSERT INTO STU1( stu1_name, stu1_sex,stu1_age,stu1_password,stu1_number,stu1_ad) "
				+ "VALUES (?, ?, ?,?,?,?)";
		List<Object> lstParas = new ArrayList<>();
		// 组织数据查询操作sql语句
		System.out.println("请输入需要添加好友的姓名：");
		String strName = input.next();
		System.out.println("请输入需要添加好友的性别：");
		String strSex = input.next();
		System.out.println("请输入需要添加好友的年龄：");
		String strAge = input.next();
		System.out.println("请输入需要添加好友的密码：");
		String strPS = input.next();
		System.out.println("请输入需要添加好友的账号：");
		String strNum = input.next();
		System.out.println("请输入需要添加好友的地址：");
		String strAD = input.next();

		// 添加参数
		lstParas.add(strName);
		lstParas.add(strSex);
		lstParas.add(strAge);
		lstParas.add(strPS);
		lstParas.add(strNum);
		lstParas.add(strAD);
		int i = DBFactory.getDBDriverInstance().update(strSql, lstParas.toArray());

		// 根据数据操作结果进行业务逻辑处理
		if (i > 0) {
			System.out.println("好友添加成功");
		}

	}

	/**
	 * 查询个人信息
	 */
	public void checkStuInf() {
		// 组织数据查询操作sql语句
		System.out.println("请输入需要查询的个人信息的ID：");
		String strID = input.next();
		String strSql = "select * from STU where STU_ID=?";
		// 数据库操作sql语句的参数
		Object[] params = { strID };
		List<StuBean> lstDepts = DBFactory.getDBDriverInstance().query(strSql, new BeanListHandler<>(StuBean.class),
				params);
		// 根据数据操作结果进行业务逻辑处理
		Iterator<StuBean> it = lstDepts.iterator();
		while (it.hasNext()) {
			System.out.println("\t" + it.next());
		}

	}

	/**
	 * 修改密码
	 * 
	 * @throws Exception
	 */
	public void modifyPassWord() {
		// 获取事务处理驱动实体类对象(此步必须使用实例变量，因为后面的事务处理全部和该实例变量有关，保证后续的操作在同一个事务机制中)

		DBDriverWithTransaction dbdt = DBFactory.getDBDriverWithTransactionInstance();
		// 打开事务：

		dbdt.beginTransaction();
		// 开始多表的事务处理

		// 事务处理修改admin的密码

		System.out.println("请输入需要修改学生密码的ID：");
        //从控制台获取学生ID
        String strID=input.next();
        System.out.println("请输入学生新的密码：");
        //从控制台获取学生密码
        String strNewPSW=input.next();
		String strSqlModify = "update stu set stu_password = ? where stu_id = ?";

		int iupate = dbdt.update(strSqlModify, strNewPSW,strID);
		
		// 根据业务逻辑判定事务处理是提交还是回滚

		// 事务提交或回滚处理

		if (iupate > 0 ) {
			// 提交事务

			dbdt.commit();
		} else {
			// 回滚事务

			dbdt.rollback();
		}
		// 关闭资源

		dbdt.close();


	}

	/**
	 * 查询好友信息
	 */
	public void searchFInf() {
		String strSql = "select * from STU where stu_age<?";
		// 数据库操作sql语句的参数
		Object[] params = { 30 };
		List<StuBean> lstDepts = DBFactory.getDBDriverInstance().query(strSql, new BeanListHandler<>(StuBean.class),
				params);
		// 根据数据操作结果进行业务逻辑处理
		Iterator<StuBean> it = lstDepts.iterator();
		while (it.hasNext()) {
			System.out.println("\t" + it.next());
		}

	}

}
